package main

import (
	"fmt"
	"pkg/lib"
)

/*
 unsafe
	 .Sizeof  查看除字符串基础数据类型数据类型大小

 fmt
	 Print
	 Println
	 Pringf
	 Sprintf 其它类型转字符串

 math 数学公式包

 decimal 解决float 失精的问题 三方
	 fmt.Println(decimal.NewFromFloat(3.12))

strings 字符串函数

strconv 字符串转换 三方

sort 排序包

time 时间包

json json

gjson 三方处理json的 可以直接找到json字符串 中对应的值不用转到结构体

sync 协程锁相关

runtime 获取系统的一些消息


简述包的概念
1、系统内置包 第三方包  自定义包
2、包管理工具 go mod 管理我们的包
	go mod init 项目名字 生成 go.mod
	一个项目中必须有main包和main方法
	自定义包对外公开的要大写
	引用 包名.方法名字 同一个包的名字不能重复
	包名建议和外层文件夹名字同 也可以不同
	import go mod项目名字/包名字
	如果报错找不到就做个软连接指过去 如果做的软连接go mod可以不用了
	一个包文件夹下面可以多个go文件
	一个工程只能有一个main方法和一个main包
	包中可以引入其它包

	包的引入
	单行引入
	import "xxx"
	多行引入
	import(
		"xxx"
		"yyy"
	)
	包的别名
	import X "xxxx"
	X.xxx方法成员

	匿名引入包
	import _ "xxxx"

	init函数
	最后一个包的init方法先执行往上冒泡 直到main init的优先级先与main init自己执行不需要手动执行

	// 使用第三方包 https://pkg.go.dev/  到gopath目录 src git clone https的 github地址， 然后 go get 不带https的地址github地址


	// import "第三方包地址一般github的地址" git mod download go get 直接下可能就墙掉了所以用上面的那种方式

	// go mod vendor把依赖搞到本地来工程来

	// 网络没问题可以直接引用第三方的地址会自动下载到本地 gitxxxx


*/

func init() {
	fmt.Print("init")
}

func main() {
	// 引入自定义包lib.Sum()
	fmt.Print(lib.Sum(), lib.Ax)
	lib.Test()
}
